/** 
 * @Title:  LocationController.java 
 * @author:  Abtswiath丶lxy
 * @data:  2016年6月23日 下午4:52:58 <创建时间>
 * 
 * @history：<以下是历史记录>
 *
 * @modifier: <修改人>
 * @modify date: 2016年6月23日 下午4:52:58 <修改时间>
 * @log: <修改内容>
 *
 * @modifier: <修改人>
 * @modify date: 2016年6月23日 下午4:52:58 <修改时间>
 * @log: <修改内容>
 */
package com.sunmi.usercenter.controller;

import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;

import android.content.Context;

/**
 * TODO<请描述这个类是干什么的>
 * 
 * @author Abtswiath丶lxy
 * @versionCode 1 <每次修改提交前+1>
 */
public class LocationController {

	private Context mContext;

	private static LocationController instance;

	private LocationClient mLocationClient = null;
	private BDLocationListener myListener;

	public LocationController(Context context,BDLocationListener myListener) {
		this.mContext = context;
		this.myListener = myListener;
		mLocationClient = new LocationClient(mContext);     //声明LocationClient类
		mLocationClient.registerLocationListener(this.myListener);    //注册监听函数
		initLocation();
	}

	public static LocationController getInstance(Context context,BDLocationListener myListener) {
		if (instance == null) {
			synchronized (LocationController.class) {
				if (instance == null) {
					instance = new LocationController(context,myListener);
				}
			}
		}
		return instance;
	}
 
	public void initLocation() {
		LocationClientOption option = new LocationClientOption();
		option.setLocationMode(LocationMode.Hight_Accuracy);// 可选，默认高精度，设置定位模式，高精度，低功耗，仅设备
		option.setCoorType("bd09ll");// 可选，默认gcj02，设置返回的定位结果坐标系
//		int span = 1000;
		option.setScanSpan(0);// 可选，默认0，即仅定位一次，设置发起定位请求的间隔需要大于等于1000ms才是有效的
		option.setIsNeedAddress(true);// 可选，设置是否需要地址信息，默认不需要
		option.setOpenGps(true);// 可选，默认false,设置是否使用gps
		option.setLocationNotify(true);// 可选，默认false，设置是否当gps有效时按照1S1次频率输出GPS结果
		option.setIsNeedLocationDescribe(true);// 可选，默认false，设置是否需要位置语义化结果，可以在BDLocation.getLocationDescribe里得到，结果类似于“在北京天安门附近”
		option.setIsNeedLocationPoiList(true);// 可选，默认false，设置是否需要POI结果，可以在BDLocation.getPoiList里得到
		option.setIgnoreKillProcess(false);// 可选，默认true，定位SDK内部是一个SERVICE，并放到了独立进程，设置是否在stop的时候杀死这个进程，默认不杀死
		option.SetIgnoreCacheException(false);// 可选，默认false，设置是否收集CRASH信息，默认收集
		option.setEnableSimulateGps(false);// 可选，默认false，设置是否需要过滤gps仿真结果，默认需要
		mLocationClient.setLocOption(option);
	}
	
	public void stop(){
		mLocationClient.stop();
		mLocationClient = null;
	}
	
	public void start(){
		mLocationClient.start();
	}

}
